(0) Obligation:

Clauses:

balance(T, TB) :- balance(T, -(I, []), -(.(','(TB, -(I, [])), X), X), -(Rest, []), -(Rest, [])).
balance(nil, -(X, X), -(A, B), -(A, B), -(.(','(nil, -(C, C)), T), T)).
balance(tree(L, V, R), -(IH, IT), -(.(','(tree(LB, VB, RB), -(A, D)), H), .(','(LB, -(A, .(VB, X))), .(','(RB, -(X, D)), T))), -(HR, TR), -(NH, NT)) :- ','(balance(L, -(IH, .(V, IT1)), -(H, T), -(HR1, TR1), -(NH, NT1)), balance(R, -(IT1, IT), -(HR1, TR1), -(HR, TR), -(NT1, NT))).

Query: balance(g,a)

(1) PrologToPrologProblemTransformerProof (SOUND transformation)

Built Prolog problem from termination graph ICLP10.

(2) Obligation:

Clauses:

balanceA(nil, .(T257, T258), T257, T258, T259, T260, T259, T260, .(','(nil, -(T261, T261)), T262), T262).
balanceA(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) :- balanceA(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383).
balanceA(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) :- ','(balanceA(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326), balanceA(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387)).
balanceB(nil, [], T386, [], T386, .(','(nil, -(T388, T388)), [])).
balanceB(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T436, T435) :- balanceA(T418, T432, T419, X508, T433, T434, X509, X510, T435, X511).
balanceB(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T455, T435) :- ','(balanceA(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454), balanceB(T420, T451, T452, T453, T455, T454)).
balanceC(nil, .(T107, T108), T107, T108, T109, T110, T111, T112, T113, .(','(T109, -(.(T107, T108), .(T110, T111))), .(','(T112, -(T111, [])), T113)), T113, .(','(nil, -(X178, X178)), X179), X179).
balanceC(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, X252, X253) :- balanceA(T142, T156, T143, X245, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, X246, X247, X252, X248).
balanceC(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, T190, X253) :- ','(balanceA(T142, T156, T143, T187, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, T188, T189, T190, T191), balanceA(T144, T187, T146, X249, T188, T189, X250, X251, T191, X253)).
balanceD(nil, nil).
balanceD(tree(T25, T26, T27), tree(T33, T34, T36)) :- balanceC(T25, T31, T26, X108, T33, T34, T35, T36, T32, X109, X110, X116, X111).
balanceD(tree(T25, T26, T27), tree(T33, T34, T36)) :- ','(balanceC(T25, T31, T26, T53, T33, T34, T35, T36, T32, T54, T55, T56, T57), balanceB(T27, T53, T54, T55, T56, T57)).

Query: balanceD(g,a)

(3) PrologToPiTRSProof (SOUND transformation)

We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes:
balanceD_in: (b,f)
balanceC_in: (b,f,b,f,f,f,f,f,f,f,f,f,f)
balanceA_in: (b,f,b,f,f,f,f,f,f,f)
balanceB_in: (b,f,f,f,f,f)
Transforming Prolog into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:

balanceD_in_ga(nil, nil) → balanceD_out_ga(nil, nil)
balanceD_in_ga(tree(T25, T26, T27), tree(T33, T34, T36)) → U10_ga(T25, T26, T27, T33, T34, T36, balanceC_in_gagaaaaaaaaaa(T25, T31, T26, X108, T33, T34, T35, T36, T32, X109, X110, X116, X111))
balanceC_in_gagaaaaaaaaaa(nil, .(T107, T108), T107, T108, T109, T110, T111, T112, T113, .(','(T109, -(.(T107, T108), .(T110, T111))), .(','(T112, -(T111, [])), T113)), T113, .(','(nil, -(X178, X178)), X179), X179) → balanceC_out_gagaaaaaaaaaa(nil, .(T107, T108), T107, T108, T109, T110, T111, T112, T113, .(','(T109, -(.(T107, T108), .(T110, T111))), .(','(T112, -(T111, [])), T113)), T113, .(','(nil, -(X178, X178)), X179), X179)
balanceC_in_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, X252, X253) → U7_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, X252, X253, balanceA_in_gagaaaaaaa(T142, T156, T143, X245, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, X246, X247, X252, X248))
balanceA_in_gagaaaaaaa(nil, .(T257, T258), T257, T258, T259, T260, T259, T260, .(','(nil, -(T261, T261)), T262), T262) → balanceA_out_gagaaaaaaa(nil, .(T257, T258), T257, T258, T259, T260, T259, T260, .(','(nil, -(T261, T261)), T262), T262)
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U1_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383))
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U2_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326))
U2_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326)) → U3_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387))
U3_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387)) → balanceA_out_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387)
U1_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383)) → balanceA_out_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387)
U7_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, X252, X253, balanceA_out_gagaaaaaaa(T142, T156, T143, X245, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, X246, X247, X252, X248)) → balanceC_out_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, X252, X253)
balanceC_in_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, T190, X253) → U8_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_in_gagaaaaaaa(T142, T156, T143, T187, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, T188, T189, T190, T191))
U8_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_out_gagaaaaaaa(T142, T156, T143, T187, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, T188, T189, T190, T191)) → U9_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_in_gagaaaaaaa(T144, T187, T146, X249, T188, T189, X250, X251, T191, X253))
U9_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_out_gagaaaaaaa(T144, T187, T146, X249, T188, T189, X250, X251, T191, X253)) → balanceC_out_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, T190, X253)
U10_ga(T25, T26, T27, T33, T34, T36, balanceC_out_gagaaaaaaaaaa(T25, T31, T26, X108, T33, T34, T35, T36, T32, X109, X110, X116, X111)) → balanceD_out_ga(tree(T25, T26, T27), tree(T33, T34, T36))
balanceD_in_ga(tree(T25, T26, T27), tree(T33, T34, T36)) → U11_ga(T25, T26, T27, T33, T34, T36, balanceC_in_gagaaaaaaaaaa(T25, T31, T26, T53, T33, T34, T35, T36, T32, T54, T55, T56, T57))
U11_ga(T25, T26, T27, T33, T34, T36, balanceC_out_gagaaaaaaaaaa(T25, T31, T26, T53, T33, T34, T35, T36, T32, T54, T55, T56, T57)) → U12_ga(T25, T26, T27, T33, T34, T36, balanceB_in_gaaaaa(T27, T53, T54, T55, T56, T57))
balanceB_in_gaaaaa(nil, [], T386, [], T386, .(','(nil, -(T388, T388)), [])) → balanceB_out_gaaaaa(nil, [], T386, [], T386, .(','(nil, -(T388, T388)), []))
balanceB_in_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T436, T435) → U4_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T436, T435, balanceA_in_gagaaaaaaa(T418, T432, T419, X508, T433, T434, X509, X510, T435, X511))
U4_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T436, T435, balanceA_out_gagaaaaaaa(T418, T432, T419, X508, T433, T434, X509, X510, T435, X511)) → balanceB_out_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T436, T435)
balanceB_in_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T455, T435) → U5_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_in_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454))
U5_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_out_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454)) → U6_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceB_in_gaaaaa(T420, T451, T452, T453, T455, T454))
U6_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceB_out_gaaaaa(T420, T451, T452, T453, T455, T454)) → balanceB_out_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T455, T435)
U12_ga(T25, T26, T27, T33, T34, T36, balanceB_out_gaaaaa(T27, T53, T54, T55, T56, T57)) → balanceD_out_ga(tree(T25, T26, T27), tree(T33, T34, T36))

The argument filtering Pi contains the following mapping:
balanceD_in_ga(x1, x2)  =  balanceD_in_ga(x1)
nil  =  nil
balanceD_out_ga(x1, x2)  =  balanceD_out_ga
tree(x1, x2, x3)  =  tree(x1, x2, x3)
U10_ga(x1, x2, x3, x4, x5, x6, x7)  =  U10_ga(x7)
balanceC_in_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13)  =  balanceC_in_gagaaaaaaaaaa(x1, x3)
balanceC_out_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13)  =  balanceC_out_gagaaaaaaaaaa
U7_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U7_gagaaaaaaaaaa(x19)
balanceA_in_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  balanceA_in_gagaaaaaaa(x1, x3)
balanceA_out_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  balanceA_out_gagaaaaaaa
U1_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U1_gagaaaaaaa(x19)
U2_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U2_gagaaaaaaa(x3, x5, x19)
U3_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U3_gagaaaaaaa(x19)
U8_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U8_gagaaaaaaaaaa(x3, x5, x19)
U9_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U9_gagaaaaaaaaaa(x19)
U11_ga(x1, x2, x3, x4, x5, x6, x7)  =  U11_ga(x3, x7)
U12_ga(x1, x2, x3, x4, x5, x6, x7)  =  U12_ga(x7)
balanceB_in_gaaaaa(x1, x2, x3, x4, x5, x6)  =  balanceB_in_gaaaaa(x1)
balanceB_out_gaaaaa(x1, x2, x3, x4, x5, x6)  =  balanceB_out_gaaaaa
U4_gaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U4_gaaaaa(x15)
U5_gaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U5_gaaaaa(x3, x15)
U6_gaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U6_gaaaaa(x15)

Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog

(4) Obligation:

Pi-finite rewrite system:
The TRS R consists of the following rules:

balanceD_in_ga(nil, nil) → balanceD_out_ga(nil, nil)
balanceD_in_ga(tree(T25, T26, T27), tree(T33, T34, T36)) → U10_ga(T25, T26, T27, T33, T34, T36, balanceC_in_gagaaaaaaaaaa(T25, T31, T26, X108, T33, T34, T35, T36, T32, X109, X110, X116, X111))
balanceC_in_gagaaaaaaaaaa(nil, .(T107, T108), T107, T108, T109, T110, T111, T112, T113, .(','(T109, -(.(T107, T108), .(T110, T111))), .(','(T112, -(T111, [])), T113)), T113, .(','(nil, -(X178, X178)), X179), X179) → balanceC_out_gagaaaaaaaaaa(nil, .(T107, T108), T107, T108, T109, T110, T111, T112, T113, .(','(T109, -(.(T107, T108), .(T110, T111))), .(','(T112, -(T111, [])), T113)), T113, .(','(nil, -(X178, X178)), X179), X179)
balanceC_in_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, X252, X253) → U7_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, X252, X253, balanceA_in_gagaaaaaaa(T142, T156, T143, X245, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, X246, X247, X252, X248))
balanceA_in_gagaaaaaaa(nil, .(T257, T258), T257, T258, T259, T260, T259, T260, .(','(nil, -(T261, T261)), T262), T262) → balanceA_out_gagaaaaaaa(nil, .(T257, T258), T257, T258, T259, T260, T259, T260, .(','(nil, -(T261, T261)), T262), T262)
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U1_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383))
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U2_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326))
U2_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326)) → U3_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387))
U3_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387)) → balanceA_out_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387)
U1_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383)) → balanceA_out_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387)
U7_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, X252, X253, balanceA_out_gagaaaaaaa(T142, T156, T143, X245, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, X246, X247, X252, X248)) → balanceC_out_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, X252, X253)
balanceC_in_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, T190, X253) → U8_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_in_gagaaaaaaa(T142, T156, T143, T187, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, T188, T189, T190, T191))
U8_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_out_gagaaaaaaa(T142, T156, T143, T187, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, T188, T189, T190, T191)) → U9_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_in_gagaaaaaaa(T144, T187, T146, X249, T188, T189, X250, X251, T191, X253))
U9_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_out_gagaaaaaaa(T144, T187, T146, X249, T188, T189, X250, X251, T191, X253)) → balanceC_out_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, T190, X253)
U10_ga(T25, T26, T27, T33, T34, T36, balanceC_out_gagaaaaaaaaaa(T25, T31, T26, X108, T33, T34, T35, T36, T32, X109, X110, X116, X111)) → balanceD_out_ga(tree(T25, T26, T27), tree(T33, T34, T36))
balanceD_in_ga(tree(T25, T26, T27), tree(T33, T34, T36)) → U11_ga(T25, T26, T27, T33, T34, T36, balanceC_in_gagaaaaaaaaaa(T25, T31, T26, T53, T33, T34, T35, T36, T32, T54, T55, T56, T57))
U11_ga(T25, T26, T27, T33, T34, T36, balanceC_out_gagaaaaaaaaaa(T25, T31, T26, T53, T33, T34, T35, T36, T32, T54, T55, T56, T57)) → U12_ga(T25, T26, T27, T33, T34, T36, balanceB_in_gaaaaa(T27, T53, T54, T55, T56, T57))
balanceB_in_gaaaaa(nil, [], T386, [], T386, .(','(nil, -(T388, T388)), [])) → balanceB_out_gaaaaa(nil, [], T386, [], T386, .(','(nil, -(T388, T388)), []))
balanceB_in_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T436, T435) → U4_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T436, T435, balanceA_in_gagaaaaaaa(T418, T432, T419, X508, T433, T434, X509, X510, T435, X511))
U4_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T436, T435, balanceA_out_gagaaaaaaa(T418, T432, T419, X508, T433, T434, X509, X510, T435, X511)) → balanceB_out_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T436, T435)
balanceB_in_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T455, T435) → U5_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_in_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454))
U5_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_out_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454)) → U6_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceB_in_gaaaaa(T420, T451, T452, T453, T455, T454))
U6_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceB_out_gaaaaa(T420, T451, T452, T453, T455, T454)) → balanceB_out_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T455, T435)
U12_ga(T25, T26, T27, T33, T34, T36, balanceB_out_gaaaaa(T27, T53, T54, T55, T56, T57)) → balanceD_out_ga(tree(T25, T26, T27), tree(T33, T34, T36))

The argument filtering Pi contains the following mapping:
balanceD_in_ga(x1, x2)  =  balanceD_in_ga(x1)
nil  =  nil
balanceD_out_ga(x1, x2)  =  balanceD_out_ga
tree(x1, x2, x3)  =  tree(x1, x2, x3)
U10_ga(x1, x2, x3, x4, x5, x6, x7)  =  U10_ga(x7)
balanceC_in_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13)  =  balanceC_in_gagaaaaaaaaaa(x1, x3)
balanceC_out_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13)  =  balanceC_out_gagaaaaaaaaaa
U7_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U7_gagaaaaaaaaaa(x19)
balanceA_in_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  balanceA_in_gagaaaaaaa(x1, x3)
balanceA_out_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  balanceA_out_gagaaaaaaa
U1_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U1_gagaaaaaaa(x19)
U2_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U2_gagaaaaaaa(x3, x5, x19)
U3_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U3_gagaaaaaaa(x19)
U8_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U8_gagaaaaaaaaaa(x3, x5, x19)
U9_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U9_gagaaaaaaaaaa(x19)
U11_ga(x1, x2, x3, x4, x5, x6, x7)  =  U11_ga(x3, x7)
U12_ga(x1, x2, x3, x4, x5, x6, x7)  =  U12_ga(x7)
balanceB_in_gaaaaa(x1, x2, x3, x4, x5, x6)  =  balanceB_in_gaaaaa(x1)
balanceB_out_gaaaaa(x1, x2, x3, x4, x5, x6)  =  balanceB_out_gaaaaa
U4_gaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U4_gaaaaa(x15)
U5_gaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U5_gaaaaa(x3, x15)
U6_gaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U6_gaaaaa(x15)

(5) DependencyPairsProof (EQUIVALENT transformation)

Using Dependency Pairs [AG00,LOPSTR] we result in the following initial DP problem:
Pi DP problem:
The TRS P consists of the following rules:

BALANCED_IN_GA(tree(T25, T26, T27), tree(T33, T34, T36)) → U10_GA(T25, T26, T27, T33, T34, T36, balanceC_in_gagaaaaaaaaaa(T25, T31, T26, X108, T33, T34, T35, T36, T32, X109, X110, X116, X111))
BALANCED_IN_GA(tree(T25, T26, T27), tree(T33, T34, T36)) → BALANCEC_IN_GAGAAAAAAAAAA(T25, T31, T26, X108, T33, T34, T35, T36, T32, X109, X110, X116, X111)
BALANCEC_IN_GAGAAAAAAAAAA(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, X252, X253) → U7_GAGAAAAAAAAAA(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, X252, X253, balanceA_in_gagaaaaaaa(T142, T156, T143, X245, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, X246, X247, X252, X248))
BALANCEC_IN_GAGAAAAAAAAAA(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, X252, X253) → BALANCEA_IN_GAGAAAAAAA(T142, T156, T143, X245, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, X246, X247, X252, X248)
BALANCEA_IN_GAGAAAAAAA(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U1_GAGAAAAAAA(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383))
BALANCEA_IN_GAGAAAAAAA(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → BALANCEA_IN_GAGAAAAAAA(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383)
BALANCEA_IN_GAGAAAAAAA(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U2_GAGAAAAAAA(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326))
U2_GAGAAAAAAA(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326)) → U3_GAGAAAAAAA(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387))
U2_GAGAAAAAAA(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326)) → BALANCEA_IN_GAGAAAAAAA(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387)
BALANCEC_IN_GAGAAAAAAAAAA(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, T190, X253) → U8_GAGAAAAAAAAAA(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_in_gagaaaaaaa(T142, T156, T143, T187, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, T188, T189, T190, T191))
U8_GAGAAAAAAAAAA(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_out_gagaaaaaaa(T142, T156, T143, T187, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, T188, T189, T190, T191)) → U9_GAGAAAAAAAAAA(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_in_gagaaaaaaa(T144, T187, T146, X249, T188, T189, X250, X251, T191, X253))
U8_GAGAAAAAAAAAA(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_out_gagaaaaaaa(T142, T156, T143, T187, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, T188, T189, T190, T191)) → BALANCEA_IN_GAGAAAAAAA(T144, T187, T146, X249, T188, T189, X250, X251, T191, X253)
BALANCED_IN_GA(tree(T25, T26, T27), tree(T33, T34, T36)) → U11_GA(T25, T26, T27, T33, T34, T36, balanceC_in_gagaaaaaaaaaa(T25, T31, T26, T53, T33, T34, T35, T36, T32, T54, T55, T56, T57))
U11_GA(T25, T26, T27, T33, T34, T36, balanceC_out_gagaaaaaaaaaa(T25, T31, T26, T53, T33, T34, T35, T36, T32, T54, T55, T56, T57)) → U12_GA(T25, T26, T27, T33, T34, T36, balanceB_in_gaaaaa(T27, T53, T54, T55, T56, T57))
U11_GA(T25, T26, T27, T33, T34, T36, balanceC_out_gagaaaaaaaaaa(T25, T31, T26, T53, T33, T34, T35, T36, T32, T54, T55, T56, T57)) → BALANCEB_IN_GAAAAA(T27, T53, T54, T55, T56, T57)
BALANCEB_IN_GAAAAA(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T436, T435) → U4_GAAAAA(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T436, T435, balanceA_in_gagaaaaaaa(T418, T432, T419, X508, T433, T434, X509, X510, T435, X511))
BALANCEB_IN_GAAAAA(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T436, T435) → BALANCEA_IN_GAGAAAAAAA(T418, T432, T419, X508, T433, T434, X509, X510, T435, X511)
BALANCEB_IN_GAAAAA(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T455, T435) → U5_GAAAAA(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_in_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454))
U5_GAAAAA(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_out_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454)) → U6_GAAAAA(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceB_in_gaaaaa(T420, T451, T452, T453, T455, T454))
U5_GAAAAA(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_out_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454)) → BALANCEB_IN_GAAAAA(T420, T451, T452, T453, T455, T454)

The TRS R consists of the following rules:

balanceD_in_ga(nil, nil) → balanceD_out_ga(nil, nil)
balanceD_in_ga(tree(T25, T26, T27), tree(T33, T34, T36)) → U10_ga(T25, T26, T27, T33, T34, T36, balanceC_in_gagaaaaaaaaaa(T25, T31, T26, X108, T33, T34, T35, T36, T32, X109, X110, X116, X111))
balanceC_in_gagaaaaaaaaaa(nil, .(T107, T108), T107, T108, T109, T110, T111, T112, T113, .(','(T109, -(.(T107, T108), .(T110, T111))), .(','(T112, -(T111, [])), T113)), T113, .(','(nil, -(X178, X178)), X179), X179) → balanceC_out_gagaaaaaaaaaa(nil, .(T107, T108), T107, T108, T109, T110, T111, T112, T113, .(','(T109, -(.(T107, T108), .(T110, T111))), .(','(T112, -(T111, [])), T113)), T113, .(','(nil, -(X178, X178)), X179), X179)
balanceC_in_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, X252, X253) → U7_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, X252, X253, balanceA_in_gagaaaaaaa(T142, T156, T143, X245, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, X246, X247, X252, X248))
balanceA_in_gagaaaaaaa(nil, .(T257, T258), T257, T258, T259, T260, T259, T260, .(','(nil, -(T261, T261)), T262), T262) → balanceA_out_gagaaaaaaa(nil, .(T257, T258), T257, T258, T259, T260, T259, T260, .(','(nil, -(T261, T261)), T262), T262)
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U1_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383))
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U2_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326))
U2_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326)) → U3_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387))
U3_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387)) → balanceA_out_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387)
U1_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383)) → balanceA_out_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387)
U7_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, X252, X253, balanceA_out_gagaaaaaaa(T142, T156, T143, X245, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, X246, X247, X252, X248)) → balanceC_out_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, X252, X253)
balanceC_in_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, T190, X253) → U8_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_in_gagaaaaaaa(T142, T156, T143, T187, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, T188, T189, T190, T191))
U8_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_out_gagaaaaaaa(T142, T156, T143, T187, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, T188, T189, T190, T191)) → U9_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_in_gagaaaaaaa(T144, T187, T146, X249, T188, T189, X250, X251, T191, X253))
U9_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_out_gagaaaaaaa(T144, T187, T146, X249, T188, T189, X250, X251, T191, X253)) → balanceC_out_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, T190, X253)
U10_ga(T25, T26, T27, T33, T34, T36, balanceC_out_gagaaaaaaaaaa(T25, T31, T26, X108, T33, T34, T35, T36, T32, X109, X110, X116, X111)) → balanceD_out_ga(tree(T25, T26, T27), tree(T33, T34, T36))
balanceD_in_ga(tree(T25, T26, T27), tree(T33, T34, T36)) → U11_ga(T25, T26, T27, T33, T34, T36, balanceC_in_gagaaaaaaaaaa(T25, T31, T26, T53, T33, T34, T35, T36, T32, T54, T55, T56, T57))
U11_ga(T25, T26, T27, T33, T34, T36, balanceC_out_gagaaaaaaaaaa(T25, T31, T26, T53, T33, T34, T35, T36, T32, T54, T55, T56, T57)) → U12_ga(T25, T26, T27, T33, T34, T36, balanceB_in_gaaaaa(T27, T53, T54, T55, T56, T57))
balanceB_in_gaaaaa(nil, [], T386, [], T386, .(','(nil, -(T388, T388)), [])) → balanceB_out_gaaaaa(nil, [], T386, [], T386, .(','(nil, -(T388, T388)), []))
balanceB_in_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T436, T435) → U4_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T436, T435, balanceA_in_gagaaaaaaa(T418, T432, T419, X508, T433, T434, X509, X510, T435, X511))
U4_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T436, T435, balanceA_out_gagaaaaaaa(T418, T432, T419, X508, T433, T434, X509, X510, T435, X511)) → balanceB_out_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T436, T435)
balanceB_in_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T455, T435) → U5_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_in_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454))
U5_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_out_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454)) → U6_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceB_in_gaaaaa(T420, T451, T452, T453, T455, T454))
U6_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceB_out_gaaaaa(T420, T451, T452, T453, T455, T454)) → balanceB_out_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T455, T435)
U12_ga(T25, T26, T27, T33, T34, T36, balanceB_out_gaaaaa(T27, T53, T54, T55, T56, T57)) → balanceD_out_ga(tree(T25, T26, T27), tree(T33, T34, T36))

The argument filtering Pi contains the following mapping:
balanceD_in_ga(x1, x2)  =  balanceD_in_ga(x1)
nil  =  nil
balanceD_out_ga(x1, x2)  =  balanceD_out_ga
tree(x1, x2, x3)  =  tree(x1, x2, x3)
U10_ga(x1, x2, x3, x4, x5, x6, x7)  =  U10_ga(x7)
balanceC_in_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13)  =  balanceC_in_gagaaaaaaaaaa(x1, x3)
balanceC_out_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13)  =  balanceC_out_gagaaaaaaaaaa
U7_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U7_gagaaaaaaaaaa(x19)
balanceA_in_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  balanceA_in_gagaaaaaaa(x1, x3)
balanceA_out_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  balanceA_out_gagaaaaaaa
U1_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U1_gagaaaaaaa(x19)
U2_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U2_gagaaaaaaa(x3, x5, x19)
U3_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U3_gagaaaaaaa(x19)
U8_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U8_gagaaaaaaaaaa(x3, x5, x19)
U9_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U9_gagaaaaaaaaaa(x19)
U11_ga(x1, x2, x3, x4, x5, x6, x7)  =  U11_ga(x3, x7)
U12_ga(x1, x2, x3, x4, x5, x6, x7)  =  U12_ga(x7)
balanceB_in_gaaaaa(x1, x2, x3, x4, x5, x6)  =  balanceB_in_gaaaaa(x1)
balanceB_out_gaaaaa(x1, x2, x3, x4, x5, x6)  =  balanceB_out_gaaaaa
U4_gaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U4_gaaaaa(x15)
U5_gaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U5_gaaaaa(x3, x15)
U6_gaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U6_gaaaaa(x15)
BALANCED_IN_GA(x1, x2)  =  BALANCED_IN_GA(x1)
U10_GA(x1, x2, x3, x4, x5, x6, x7)  =  U10_GA(x7)
BALANCEC_IN_GAGAAAAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13)  =  BALANCEC_IN_GAGAAAAAAAAAA(x1, x3)
U7_GAGAAAAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U7_GAGAAAAAAAAAA(x19)
BALANCEA_IN_GAGAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  BALANCEA_IN_GAGAAAAAAA(x1, x3)
U1_GAGAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U1_GAGAAAAAAA(x19)
U2_GAGAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U2_GAGAAAAAAA(x3, x5, x19)
U3_GAGAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U3_GAGAAAAAAA(x19)
U8_GAGAAAAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U8_GAGAAAAAAAAAA(x3, x5, x19)
U9_GAGAAAAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U9_GAGAAAAAAAAAA(x19)
U11_GA(x1, x2, x3, x4, x5, x6, x7)  =  U11_GA(x3, x7)
U12_GA(x1, x2, x3, x4, x5, x6, x7)  =  U12_GA(x7)
BALANCEB_IN_GAAAAA(x1, x2, x3, x4, x5, x6)  =  BALANCEB_IN_GAAAAA(x1)
U4_GAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U4_GAAAAA(x15)
U5_GAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U5_GAAAAA(x3, x15)
U6_GAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U6_GAAAAA(x15)

We have to consider all (P,R,Pi)-chains

(6) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

BALANCED_IN_GA(tree(T25, T26, T27), tree(T33, T34, T36)) → U10_GA(T25, T26, T27, T33, T34, T36, balanceC_in_gagaaaaaaaaaa(T25, T31, T26, X108, T33, T34, T35, T36, T32, X109, X110, X116, X111))
BALANCED_IN_GA(tree(T25, T26, T27), tree(T33, T34, T36)) → BALANCEC_IN_GAGAAAAAAAAAA(T25, T31, T26, X108, T33, T34, T35, T36, T32, X109, X110, X116, X111)
BALANCEC_IN_GAGAAAAAAAAAA(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, X252, X253) → U7_GAGAAAAAAAAAA(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, X252, X253, balanceA_in_gagaaaaaaa(T142, T156, T143, X245, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, X246, X247, X252, X248))
BALANCEC_IN_GAGAAAAAAAAAA(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, X252, X253) → BALANCEA_IN_GAGAAAAAAA(T142, T156, T143, X245, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, X246, X247, X252, X248)
BALANCEA_IN_GAGAAAAAAA(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U1_GAGAAAAAAA(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383))
BALANCEA_IN_GAGAAAAAAA(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → BALANCEA_IN_GAGAAAAAAA(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383)
BALANCEA_IN_GAGAAAAAAA(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U2_GAGAAAAAAA(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326))
U2_GAGAAAAAAA(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326)) → U3_GAGAAAAAAA(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387))
U2_GAGAAAAAAA(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326)) → BALANCEA_IN_GAGAAAAAAA(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387)
BALANCEC_IN_GAGAAAAAAAAAA(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, T190, X253) → U8_GAGAAAAAAAAAA(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_in_gagaaaaaaa(T142, T156, T143, T187, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, T188, T189, T190, T191))
U8_GAGAAAAAAAAAA(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_out_gagaaaaaaa(T142, T156, T143, T187, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, T188, T189, T190, T191)) → U9_GAGAAAAAAAAAA(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_in_gagaaaaaaa(T144, T187, T146, X249, T188, T189, X250, X251, T191, X253))
U8_GAGAAAAAAAAAA(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_out_gagaaaaaaa(T142, T156, T143, T187, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, T188, T189, T190, T191)) → BALANCEA_IN_GAGAAAAAAA(T144, T187, T146, X249, T188, T189, X250, X251, T191, X253)
BALANCED_IN_GA(tree(T25, T26, T27), tree(T33, T34, T36)) → U11_GA(T25, T26, T27, T33, T34, T36, balanceC_in_gagaaaaaaaaaa(T25, T31, T26, T53, T33, T34, T35, T36, T32, T54, T55, T56, T57))
U11_GA(T25, T26, T27, T33, T34, T36, balanceC_out_gagaaaaaaaaaa(T25, T31, T26, T53, T33, T34, T35, T36, T32, T54, T55, T56, T57)) → U12_GA(T25, T26, T27, T33, T34, T36, balanceB_in_gaaaaa(T27, T53, T54, T55, T56, T57))
U11_GA(T25, T26, T27, T33, T34, T36, balanceC_out_gagaaaaaaaaaa(T25, T31, T26, T53, T33, T34, T35, T36, T32, T54, T55, T56, T57)) → BALANCEB_IN_GAAAAA(T27, T53, T54, T55, T56, T57)
BALANCEB_IN_GAAAAA(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T436, T435) → U4_GAAAAA(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T436, T435, balanceA_in_gagaaaaaaa(T418, T432, T419, X508, T433, T434, X509, X510, T435, X511))
BALANCEB_IN_GAAAAA(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T436, T435) → BALANCEA_IN_GAGAAAAAAA(T418, T432, T419, X508, T433, T434, X509, X510, T435, X511)
BALANCEB_IN_GAAAAA(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T455, T435) → U5_GAAAAA(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_in_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454))
U5_GAAAAA(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_out_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454)) → U6_GAAAAA(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceB_in_gaaaaa(T420, T451, T452, T453, T455, T454))
U5_GAAAAA(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_out_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454)) → BALANCEB_IN_GAAAAA(T420, T451, T452, T453, T455, T454)

The TRS R consists of the following rules:

balanceD_in_ga(nil, nil) → balanceD_out_ga(nil, nil)
balanceD_in_ga(tree(T25, T26, T27), tree(T33, T34, T36)) → U10_ga(T25, T26, T27, T33, T34, T36, balanceC_in_gagaaaaaaaaaa(T25, T31, T26, X108, T33, T34, T35, T36, T32, X109, X110, X116, X111))
balanceC_in_gagaaaaaaaaaa(nil, .(T107, T108), T107, T108, T109, T110, T111, T112, T113, .(','(T109, -(.(T107, T108), .(T110, T111))), .(','(T112, -(T111, [])), T113)), T113, .(','(nil, -(X178, X178)), X179), X179) → balanceC_out_gagaaaaaaaaaa(nil, .(T107, T108), T107, T108, T109, T110, T111, T112, T113, .(','(T109, -(.(T107, T108), .(T110, T111))), .(','(T112, -(T111, [])), T113)), T113, .(','(nil, -(X178, X178)), X179), X179)
balanceC_in_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, X252, X253) → U7_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, X252, X253, balanceA_in_gagaaaaaaa(T142, T156, T143, X245, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, X246, X247, X252, X248))
balanceA_in_gagaaaaaaa(nil, .(T257, T258), T257, T258, T259, T260, T259, T260, .(','(nil, -(T261, T261)), T262), T262) → balanceA_out_gagaaaaaaa(nil, .(T257, T258), T257, T258, T259, T260, T259, T260, .(','(nil, -(T261, T261)), T262), T262)
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U1_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383))
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U2_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326))
U2_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326)) → U3_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387))
U3_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387)) → balanceA_out_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387)
U1_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383)) → balanceA_out_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387)
U7_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, X252, X253, balanceA_out_gagaaaaaaa(T142, T156, T143, X245, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, X246, X247, X252, X248)) → balanceC_out_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, X252, X253)
balanceC_in_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, T190, X253) → U8_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_in_gagaaaaaaa(T142, T156, T143, T187, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, T188, T189, T190, T191))
U8_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_out_gagaaaaaaa(T142, T156, T143, T187, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, T188, T189, T190, T191)) → U9_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_in_gagaaaaaaa(T144, T187, T146, X249, T188, T189, X250, X251, T191, X253))
U9_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_out_gagaaaaaaa(T144, T187, T146, X249, T188, T189, X250, X251, T191, X253)) → balanceC_out_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, T190, X253)
U10_ga(T25, T26, T27, T33, T34, T36, balanceC_out_gagaaaaaaaaaa(T25, T31, T26, X108, T33, T34, T35, T36, T32, X109, X110, X116, X111)) → balanceD_out_ga(tree(T25, T26, T27), tree(T33, T34, T36))
balanceD_in_ga(tree(T25, T26, T27), tree(T33, T34, T36)) → U11_ga(T25, T26, T27, T33, T34, T36, balanceC_in_gagaaaaaaaaaa(T25, T31, T26, T53, T33, T34, T35, T36, T32, T54, T55, T56, T57))
U11_ga(T25, T26, T27, T33, T34, T36, balanceC_out_gagaaaaaaaaaa(T25, T31, T26, T53, T33, T34, T35, T36, T32, T54, T55, T56, T57)) → U12_ga(T25, T26, T27, T33, T34, T36, balanceB_in_gaaaaa(T27, T53, T54, T55, T56, T57))
balanceB_in_gaaaaa(nil, [], T386, [], T386, .(','(nil, -(T388, T388)), [])) → balanceB_out_gaaaaa(nil, [], T386, [], T386, .(','(nil, -(T388, T388)), []))
balanceB_in_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T436, T435) → U4_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T436, T435, balanceA_in_gagaaaaaaa(T418, T432, T419, X508, T433, T434, X509, X510, T435, X511))
U4_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T436, T435, balanceA_out_gagaaaaaaa(T418, T432, T419, X508, T433, T434, X509, X510, T435, X511)) → balanceB_out_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T436, T435)
balanceB_in_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T455, T435) → U5_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_in_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454))
U5_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_out_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454)) → U6_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceB_in_gaaaaa(T420, T451, T452, T453, T455, T454))
U6_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceB_out_gaaaaa(T420, T451, T452, T453, T455, T454)) → balanceB_out_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T455, T435)
U12_ga(T25, T26, T27, T33, T34, T36, balanceB_out_gaaaaa(T27, T53, T54, T55, T56, T57)) → balanceD_out_ga(tree(T25, T26, T27), tree(T33, T34, T36))

The argument filtering Pi contains the following mapping:
balanceD_in_ga(x1, x2)  =  balanceD_in_ga(x1)
nil  =  nil
balanceD_out_ga(x1, x2)  =  balanceD_out_ga
tree(x1, x2, x3)  =  tree(x1, x2, x3)
U10_ga(x1, x2, x3, x4, x5, x6, x7)  =  U10_ga(x7)
balanceC_in_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13)  =  balanceC_in_gagaaaaaaaaaa(x1, x3)
balanceC_out_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13)  =  balanceC_out_gagaaaaaaaaaa
U7_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U7_gagaaaaaaaaaa(x19)
balanceA_in_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  balanceA_in_gagaaaaaaa(x1, x3)
balanceA_out_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  balanceA_out_gagaaaaaaa
U1_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U1_gagaaaaaaa(x19)
U2_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U2_gagaaaaaaa(x3, x5, x19)
U3_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U3_gagaaaaaaa(x19)
U8_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U8_gagaaaaaaaaaa(x3, x5, x19)
U9_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U9_gagaaaaaaaaaa(x19)
U11_ga(x1, x2, x3, x4, x5, x6, x7)  =  U11_ga(x3, x7)
U12_ga(x1, x2, x3, x4, x5, x6, x7)  =  U12_ga(x7)
balanceB_in_gaaaaa(x1, x2, x3, x4, x5, x6)  =  balanceB_in_gaaaaa(x1)
balanceB_out_gaaaaa(x1, x2, x3, x4, x5, x6)  =  balanceB_out_gaaaaa
U4_gaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U4_gaaaaa(x15)
U5_gaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U5_gaaaaa(x3, x15)
U6_gaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U6_gaaaaa(x15)
BALANCED_IN_GA(x1, x2)  =  BALANCED_IN_GA(x1)
U10_GA(x1, x2, x3, x4, x5, x6, x7)  =  U10_GA(x7)
BALANCEC_IN_GAGAAAAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13)  =  BALANCEC_IN_GAGAAAAAAAAAA(x1, x3)
U7_GAGAAAAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U7_GAGAAAAAAAAAA(x19)
BALANCEA_IN_GAGAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  BALANCEA_IN_GAGAAAAAAA(x1, x3)
U1_GAGAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U1_GAGAAAAAAA(x19)
U2_GAGAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U2_GAGAAAAAAA(x3, x5, x19)
U3_GAGAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U3_GAGAAAAAAA(x19)
U8_GAGAAAAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U8_GAGAAAAAAAAAA(x3, x5, x19)
U9_GAGAAAAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U9_GAGAAAAAAAAAA(x19)
U11_GA(x1, x2, x3, x4, x5, x6, x7)  =  U11_GA(x3, x7)
U12_GA(x1, x2, x3, x4, x5, x6, x7)  =  U12_GA(x7)
BALANCEB_IN_GAAAAA(x1, x2, x3, x4, x5, x6)  =  BALANCEB_IN_GAAAAA(x1)
U4_GAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U4_GAAAAA(x15)
U5_GAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U5_GAAAAA(x3, x15)
U6_GAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U6_GAAAAA(x15)

We have to consider all (P,R,Pi)-chains

(7) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LOPSTR] contains 2 SCCs with 15 less nodes.

(8) Complex Obligation (AND)

(9) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

BALANCEA_IN_GAGAAAAAAA(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U2_GAGAAAAAAA(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326))
U2_GAGAAAAAAA(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326)) → BALANCEA_IN_GAGAAAAAAA(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387)
BALANCEA_IN_GAGAAAAAAA(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → BALANCEA_IN_GAGAAAAAAA(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383)

The TRS R consists of the following rules:

balanceD_in_ga(nil, nil) → balanceD_out_ga(nil, nil)
balanceD_in_ga(tree(T25, T26, T27), tree(T33, T34, T36)) → U10_ga(T25, T26, T27, T33, T34, T36, balanceC_in_gagaaaaaaaaaa(T25, T31, T26, X108, T33, T34, T35, T36, T32, X109, X110, X116, X111))
balanceC_in_gagaaaaaaaaaa(nil, .(T107, T108), T107, T108, T109, T110, T111, T112, T113, .(','(T109, -(.(T107, T108), .(T110, T111))), .(','(T112, -(T111, [])), T113)), T113, .(','(nil, -(X178, X178)), X179), X179) → balanceC_out_gagaaaaaaaaaa(nil, .(T107, T108), T107, T108, T109, T110, T111, T112, T113, .(','(T109, -(.(T107, T108), .(T110, T111))), .(','(T112, -(T111, [])), T113)), T113, .(','(nil, -(X178, X178)), X179), X179)
balanceC_in_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, X252, X253) → U7_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, X252, X253, balanceA_in_gagaaaaaaa(T142, T156, T143, X245, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, X246, X247, X252, X248))
balanceA_in_gagaaaaaaa(nil, .(T257, T258), T257, T258, T259, T260, T259, T260, .(','(nil, -(T261, T261)), T262), T262) → balanceA_out_gagaaaaaaa(nil, .(T257, T258), T257, T258, T259, T260, T259, T260, .(','(nil, -(T261, T261)), T262), T262)
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U1_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383))
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U2_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326))
U2_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326)) → U3_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387))
U3_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387)) → balanceA_out_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387)
U1_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383)) → balanceA_out_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387)
U7_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, X252, X253, balanceA_out_gagaaaaaaa(T142, T156, T143, X245, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, X246, X247, X252, X248)) → balanceC_out_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, X252, X253)
balanceC_in_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, T190, X253) → U8_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_in_gagaaaaaaa(T142, T156, T143, T187, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, T188, T189, T190, T191))
U8_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_out_gagaaaaaaa(T142, T156, T143, T187, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, T188, T189, T190, T191)) → U9_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_in_gagaaaaaaa(T144, T187, T146, X249, T188, T189, X250, X251, T191, X253))
U9_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_out_gagaaaaaaa(T144, T187, T146, X249, T188, T189, X250, X251, T191, X253)) → balanceC_out_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, T190, X253)
U10_ga(T25, T26, T27, T33, T34, T36, balanceC_out_gagaaaaaaaaaa(T25, T31, T26, X108, T33, T34, T35, T36, T32, X109, X110, X116, X111)) → balanceD_out_ga(tree(T25, T26, T27), tree(T33, T34, T36))
balanceD_in_ga(tree(T25, T26, T27), tree(T33, T34, T36)) → U11_ga(T25, T26, T27, T33, T34, T36, balanceC_in_gagaaaaaaaaaa(T25, T31, T26, T53, T33, T34, T35, T36, T32, T54, T55, T56, T57))
U11_ga(T25, T26, T27, T33, T34, T36, balanceC_out_gagaaaaaaaaaa(T25, T31, T26, T53, T33, T34, T35, T36, T32, T54, T55, T56, T57)) → U12_ga(T25, T26, T27, T33, T34, T36, balanceB_in_gaaaaa(T27, T53, T54, T55, T56, T57))
balanceB_in_gaaaaa(nil, [], T386, [], T386, .(','(nil, -(T388, T388)), [])) → balanceB_out_gaaaaa(nil, [], T386, [], T386, .(','(nil, -(T388, T388)), []))
balanceB_in_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T436, T435) → U4_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T436, T435, balanceA_in_gagaaaaaaa(T418, T432, T419, X508, T433, T434, X509, X510, T435, X511))
U4_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T436, T435, balanceA_out_gagaaaaaaa(T418, T432, T419, X508, T433, T434, X509, X510, T435, X511)) → balanceB_out_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T436, T435)
balanceB_in_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T455, T435) → U5_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_in_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454))
U5_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_out_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454)) → U6_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceB_in_gaaaaa(T420, T451, T452, T453, T455, T454))
U6_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceB_out_gaaaaa(T420, T451, T452, T453, T455, T454)) → balanceB_out_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T455, T435)
U12_ga(T25, T26, T27, T33, T34, T36, balanceB_out_gaaaaa(T27, T53, T54, T55, T56, T57)) → balanceD_out_ga(tree(T25, T26, T27), tree(T33, T34, T36))

The argument filtering Pi contains the following mapping:
balanceD_in_ga(x1, x2)  =  balanceD_in_ga(x1)
nil  =  nil
balanceD_out_ga(x1, x2)  =  balanceD_out_ga
tree(x1, x2, x3)  =  tree(x1, x2, x3)
U10_ga(x1, x2, x3, x4, x5, x6, x7)  =  U10_ga(x7)
balanceC_in_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13)  =  balanceC_in_gagaaaaaaaaaa(x1, x3)
balanceC_out_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13)  =  balanceC_out_gagaaaaaaaaaa
U7_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U7_gagaaaaaaaaaa(x19)
balanceA_in_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  balanceA_in_gagaaaaaaa(x1, x3)
balanceA_out_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  balanceA_out_gagaaaaaaa
U1_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U1_gagaaaaaaa(x19)
U2_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U2_gagaaaaaaa(x3, x5, x19)
U3_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U3_gagaaaaaaa(x19)
U8_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U8_gagaaaaaaaaaa(x3, x5, x19)
U9_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U9_gagaaaaaaaaaa(x19)
U11_ga(x1, x2, x3, x4, x5, x6, x7)  =  U11_ga(x3, x7)
U12_ga(x1, x2, x3, x4, x5, x6, x7)  =  U12_ga(x7)
balanceB_in_gaaaaa(x1, x2, x3, x4, x5, x6)  =  balanceB_in_gaaaaa(x1)
balanceB_out_gaaaaa(x1, x2, x3, x4, x5, x6)  =  balanceB_out_gaaaaa
U4_gaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U4_gaaaaa(x15)
U5_gaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U5_gaaaaa(x3, x15)
U6_gaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U6_gaaaaa(x15)
BALANCEA_IN_GAGAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  BALANCEA_IN_GAGAAAAAAA(x1, x3)
U2_GAGAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U2_GAGAAAAAAA(x3, x5, x19)

We have to consider all (P,R,Pi)-chains

(10) UsableRulesProof (EQUIVALENT transformation)

For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R.

(11) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

BALANCEA_IN_GAGAAAAAAA(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U2_GAGAAAAAAA(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326))
U2_GAGAAAAAAA(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326)) → BALANCEA_IN_GAGAAAAAAA(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387)
BALANCEA_IN_GAGAAAAAAA(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → BALANCEA_IN_GAGAAAAAAA(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383)

The TRS R consists of the following rules:

balanceA_in_gagaaaaaaa(nil, .(T257, T258), T257, T258, T259, T260, T259, T260, .(','(nil, -(T261, T261)), T262), T262) → balanceA_out_gagaaaaaaa(nil, .(T257, T258), T257, T258, T259, T260, T259, T260, .(','(nil, -(T261, T261)), T262), T262)
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U1_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383))
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U2_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326))
U1_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383)) → balanceA_out_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387)
U2_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326)) → U3_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387))
U3_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387)) → balanceA_out_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387)

The argument filtering Pi contains the following mapping:
nil  =  nil
tree(x1, x2, x3)  =  tree(x1, x2, x3)
balanceA_in_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  balanceA_in_gagaaaaaaa(x1, x3)
balanceA_out_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  balanceA_out_gagaaaaaaa
U1_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U1_gagaaaaaaa(x19)
U2_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U2_gagaaaaaaa(x3, x5, x19)
U3_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U3_gagaaaaaaa(x19)
BALANCEA_IN_GAGAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  BALANCEA_IN_GAGAAAAAAA(x1, x3)
U2_GAGAAAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U2_GAGAAAAAAA(x3, x5, x19)

We have to consider all (P,R,Pi)-chains

(12) PiDPToQDPProof (SOUND transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(13) Obligation:

Q DP problem:
The TRS P consists of the following rules:

BALANCEA_IN_GAGAAAAAAA(tree(T291, T292, T293), T295) → U2_GAGAAAAAAA(T293, T295, balanceA_in_gagaaaaaaa(T291, T292))
U2_GAGAAAAAAA(T293, T295, balanceA_out_gagaaaaaaa) → BALANCEA_IN_GAGAAAAAAA(T293, T295)
BALANCEA_IN_GAGAAAAAAA(tree(T291, T292, T293), T295) → BALANCEA_IN_GAGAAAAAAA(T291, T292)

The TRS R consists of the following rules:

balanceA_in_gagaaaaaaa(nil, T257) → balanceA_out_gagaaaaaaa
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T295) → U1_gagaaaaaaa(balanceA_in_gagaaaaaaa(T291, T292))
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T295) → U2_gagaaaaaaa(T293, T295, balanceA_in_gagaaaaaaa(T291, T292))
U1_gagaaaaaaa(balanceA_out_gagaaaaaaa) → balanceA_out_gagaaaaaaa
U2_gagaaaaaaa(T293, T295, balanceA_out_gagaaaaaaa) → U3_gagaaaaaaa(balanceA_in_gagaaaaaaa(T293, T295))
U3_gagaaaaaaa(balanceA_out_gagaaaaaaa) → balanceA_out_gagaaaaaaa

The set Q consists of the following terms:

balanceA_in_gagaaaaaaa(x0, x1)
U1_gagaaaaaaa(x0)
U2_gagaaaaaaa(x0, x1, x2)
U3_gagaaaaaaa(x0)

We have to consider all (P,Q,R)-chains.

(14) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • U2_GAGAAAAAAA(T293, T295, balanceA_out_gagaaaaaaa) → BALANCEA_IN_GAGAAAAAAA(T293, T295)
    The graph contains the following edges 1 >= 1, 2 >= 2

  • BALANCEA_IN_GAGAAAAAAA(tree(T291, T292, T293), T295) → BALANCEA_IN_GAGAAAAAAA(T291, T292)
    The graph contains the following edges 1 > 1, 1 > 2

  • BALANCEA_IN_GAGAAAAAAA(tree(T291, T292, T293), T295) → U2_GAGAAAAAAA(T293, T295, balanceA_in_gagaaaaaaa(T291, T292))
    The graph contains the following edges 1 > 1, 2 >= 2

(15) YES

(16) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

BALANCEB_IN_GAAAAA(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T455, T435) → U5_GAAAAA(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_in_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454))
U5_GAAAAA(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_out_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454)) → BALANCEB_IN_GAAAAA(T420, T451, T452, T453, T455, T454)

The TRS R consists of the following rules:

balanceD_in_ga(nil, nil) → balanceD_out_ga(nil, nil)
balanceD_in_ga(tree(T25, T26, T27), tree(T33, T34, T36)) → U10_ga(T25, T26, T27, T33, T34, T36, balanceC_in_gagaaaaaaaaaa(T25, T31, T26, X108, T33, T34, T35, T36, T32, X109, X110, X116, X111))
balanceC_in_gagaaaaaaaaaa(nil, .(T107, T108), T107, T108, T109, T110, T111, T112, T113, .(','(T109, -(.(T107, T108), .(T110, T111))), .(','(T112, -(T111, [])), T113)), T113, .(','(nil, -(X178, X178)), X179), X179) → balanceC_out_gagaaaaaaaaaa(nil, .(T107, T108), T107, T108, T109, T110, T111, T112, T113, .(','(T109, -(.(T107, T108), .(T110, T111))), .(','(T112, -(T111, [])), T113)), T113, .(','(nil, -(X178, X178)), X179), X179)
balanceC_in_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, X252, X253) → U7_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, X252, X253, balanceA_in_gagaaaaaaa(T142, T156, T143, X245, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, X246, X247, X252, X248))
balanceA_in_gagaaaaaaa(nil, .(T257, T258), T257, T258, T259, T260, T259, T260, .(','(nil, -(T261, T261)), T262), T262) → balanceA_out_gagaaaaaaa(nil, .(T257, T258), T257, T258, T259, T260, T259, T260, .(','(nil, -(T261, T261)), T262), T262)
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U1_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383))
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U2_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326))
U2_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326)) → U3_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387))
U3_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387)) → balanceA_out_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387)
U1_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383)) → balanceA_out_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387)
U7_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, X252, X253, balanceA_out_gagaaaaaaa(T142, T156, T143, X245, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, X246, X247, X252, X248)) → balanceC_out_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, X252, X253)
balanceC_in_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, T190, X253) → U8_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_in_gagaaaaaaa(T142, T156, T143, T187, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, T188, T189, T190, T191))
U8_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_out_gagaaaaaaa(T142, T156, T143, T187, .(','(T158, -(T159, [])), .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157))), T157, T188, T189, T190, T191)) → U9_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_in_gagaaaaaaa(T144, T187, T146, X249, T188, T189, X250, X251, T191, X253))
U9_gagaaaaaaaaaa(T142, T143, T144, T156, T146, X249, T160, T161, T163, T164, T159, T158, T162, T157, X250, X251, T190, X253, balanceA_out_gagaaaaaaa(T144, T187, T146, X249, T188, T189, X250, X251, T191, X253)) → balanceC_out_gagaaaaaaaaaa(tree(T142, T143, T144), T156, T146, X249, tree(T160, T161, T163), T164, T159, T158, .(','(T160, -(T156, .(T161, T162))), .(','(T163, -(T162, .(T164, T159))), T157)), X250, X251, T190, X253)
U10_ga(T25, T26, T27, T33, T34, T36, balanceC_out_gagaaaaaaaaaa(T25, T31, T26, X108, T33, T34, T35, T36, T32, X109, X110, X116, X111)) → balanceD_out_ga(tree(T25, T26, T27), tree(T33, T34, T36))
balanceD_in_ga(tree(T25, T26, T27), tree(T33, T34, T36)) → U11_ga(T25, T26, T27, T33, T34, T36, balanceC_in_gagaaaaaaaaaa(T25, T31, T26, T53, T33, T34, T35, T36, T32, T54, T55, T56, T57))
U11_ga(T25, T26, T27, T33, T34, T36, balanceC_out_gagaaaaaaaaaa(T25, T31, T26, T53, T33, T34, T35, T36, T32, T54, T55, T56, T57)) → U12_ga(T25, T26, T27, T33, T34, T36, balanceB_in_gaaaaa(T27, T53, T54, T55, T56, T57))
balanceB_in_gaaaaa(nil, [], T386, [], T386, .(','(nil, -(T388, T388)), [])) → balanceB_out_gaaaaa(nil, [], T386, [], T386, .(','(nil, -(T388, T388)), []))
balanceB_in_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T436, T435) → U4_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T436, T435, balanceA_in_gagaaaaaaa(T418, T432, T419, X508, T433, T434, X509, X510, T435, X511))
U4_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T436, T435, balanceA_out_gagaaaaaaa(T418, T432, T419, X508, T433, T434, X509, X510, T435, X511)) → balanceB_out_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T436, T435)
balanceB_in_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T455, T435) → U5_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_in_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454))
U5_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_out_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454)) → U6_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceB_in_gaaaaa(T420, T451, T452, T453, T455, T454))
U6_gaaaaa(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceB_out_gaaaaa(T420, T451, T452, T453, T455, T454)) → balanceB_out_gaaaaa(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T455, T435)
U12_ga(T25, T26, T27, T33, T34, T36, balanceB_out_gaaaaa(T27, T53, T54, T55, T56, T57)) → balanceD_out_ga(tree(T25, T26, T27), tree(T33, T34, T36))

The argument filtering Pi contains the following mapping:
balanceD_in_ga(x1, x2)  =  balanceD_in_ga(x1)
nil  =  nil
balanceD_out_ga(x1, x2)  =  balanceD_out_ga
tree(x1, x2, x3)  =  tree(x1, x2, x3)
U10_ga(x1, x2, x3, x4, x5, x6, x7)  =  U10_ga(x7)
balanceC_in_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13)  =  balanceC_in_gagaaaaaaaaaa(x1, x3)
balanceC_out_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13)  =  balanceC_out_gagaaaaaaaaaa
U7_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U7_gagaaaaaaaaaa(x19)
balanceA_in_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  balanceA_in_gagaaaaaaa(x1, x3)
balanceA_out_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  balanceA_out_gagaaaaaaa
U1_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U1_gagaaaaaaa(x19)
U2_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U2_gagaaaaaaa(x3, x5, x19)
U3_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U3_gagaaaaaaa(x19)
U8_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U8_gagaaaaaaaaaa(x3, x5, x19)
U9_gagaaaaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U9_gagaaaaaaaaaa(x19)
U11_ga(x1, x2, x3, x4, x5, x6, x7)  =  U11_ga(x3, x7)
U12_ga(x1, x2, x3, x4, x5, x6, x7)  =  U12_ga(x7)
balanceB_in_gaaaaa(x1, x2, x3, x4, x5, x6)  =  balanceB_in_gaaaaa(x1)
balanceB_out_gaaaaa(x1, x2, x3, x4, x5, x6)  =  balanceB_out_gaaaaa
U4_gaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U4_gaaaaa(x15)
U5_gaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U5_gaaaaa(x3, x15)
U6_gaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U6_gaaaaa(x15)
BALANCEB_IN_GAAAAA(x1, x2, x3, x4, x5, x6)  =  BALANCEB_IN_GAAAAA(x1)
U5_GAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U5_GAAAAA(x3, x15)

We have to consider all (P,R,Pi)-chains

(17) UsableRulesProof (EQUIVALENT transformation)

For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R.

(18) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

BALANCEB_IN_GAAAAA(tree(T418, T419, T420), T432, .(','(tree(T422, T423, T424), -(T425, T426)), T433), .(','(T422, -(T425, .(T423, T428))), .(','(T424, -(T428, T426)), T434)), T455, T435) → U5_GAAAAA(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_in_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454))
U5_GAAAAA(T418, T419, T420, T432, T422, T423, T424, T425, T426, T433, T428, T434, T455, T435, balanceA_out_gagaaaaaaa(T418, T432, T419, T451, T433, T434, T452, T453, T435, T454)) → BALANCEB_IN_GAAAAA(T420, T451, T452, T453, T455, T454)

The TRS R consists of the following rules:

balanceA_in_gagaaaaaaa(nil, .(T257, T258), T257, T258, T259, T260, T259, T260, .(','(nil, -(T261, T261)), T262), T262) → balanceA_out_gagaaaaaaa(nil, .(T257, T258), T257, T258, T259, T260, T259, T260, .(','(nil, -(T261, T261)), T262), T262)
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U1_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383))
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387) → U2_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326))
U1_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, X380, T306, T307, X381, X382, T308, X383)) → balanceA_out_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387)
U2_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T291, T305, T292, T323, T306, T307, T324, T325, T308, T326)) → U3_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_in_gagaaaaaaa(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387))
U3_gagaaaaaaa(T291, T292, T293, T305, T295, X384, T296, T297, T298, T299, T300, T306, T302, T307, X385, X386, T308, X387, balanceA_out_gagaaaaaaa(T293, T323, T295, X384, T324, T325, X385, X386, T326, X387)) → balanceA_out_gagaaaaaaa(tree(T291, T292, T293), T305, T295, X384, .(','(tree(T296, T297, T298), -(T299, T300)), T306), .(','(T296, -(T299, .(T297, T302))), .(','(T298, -(T302, T300)), T307)), X385, X386, T308, X387)

The argument filtering Pi contains the following mapping:
nil  =  nil
tree(x1, x2, x3)  =  tree(x1, x2, x3)
balanceA_in_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  balanceA_in_gagaaaaaaa(x1, x3)
balanceA_out_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)  =  balanceA_out_gagaaaaaaa
U1_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U1_gagaaaaaaa(x19)
U2_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U2_gagaaaaaaa(x3, x5, x19)
U3_gagaaaaaaa(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19)  =  U3_gagaaaaaaa(x19)
BALANCEB_IN_GAAAAA(x1, x2, x3, x4, x5, x6)  =  BALANCEB_IN_GAAAAA(x1)
U5_GAAAAA(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15)  =  U5_GAAAAA(x3, x15)

We have to consider all (P,R,Pi)-chains

(19) PiDPToQDPProof (SOUND transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(20) Obligation:

Q DP problem:
The TRS P consists of the following rules:

BALANCEB_IN_GAAAAA(tree(T418, T419, T420)) → U5_GAAAAA(T420, balanceA_in_gagaaaaaaa(T418, T419))
U5_GAAAAA(T420, balanceA_out_gagaaaaaaa) → BALANCEB_IN_GAAAAA(T420)

The TRS R consists of the following rules:

balanceA_in_gagaaaaaaa(nil, T257) → balanceA_out_gagaaaaaaa
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T295) → U1_gagaaaaaaa(balanceA_in_gagaaaaaaa(T291, T292))
balanceA_in_gagaaaaaaa(tree(T291, T292, T293), T295) → U2_gagaaaaaaa(T293, T295, balanceA_in_gagaaaaaaa(T291, T292))
U1_gagaaaaaaa(balanceA_out_gagaaaaaaa) → balanceA_out_gagaaaaaaa
U2_gagaaaaaaa(T293, T295, balanceA_out_gagaaaaaaa) → U3_gagaaaaaaa(balanceA_in_gagaaaaaaa(T293, T295))
U3_gagaaaaaaa(balanceA_out_gagaaaaaaa) → balanceA_out_gagaaaaaaa

The set Q consists of the following terms:

balanceA_in_gagaaaaaaa(x0, x1)
U1_gagaaaaaaa(x0)
U2_gagaaaaaaa(x0, x1, x2)
U3_gagaaaaaaa(x0)

We have to consider all (P,Q,R)-chains.

(21) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • U5_GAAAAA(T420, balanceA_out_gagaaaaaaa) → BALANCEB_IN_GAAAAA(T420)
    The graph contains the following edges 1 >= 1

  • BALANCEB_IN_GAAAAA(tree(T418, T419, T420)) → U5_GAAAAA(T420, balanceA_in_gagaaaaaaa(T418, T419))
    The graph contains the following edges 1 > 1

(22) YES